package org.eliza.base.basicx.datatypex

/// 字符
// 和 Java 不一样，Kotlin 中的 Char 不能直接和数字操作，Char 必需是单引号 ' 包含起来的。比如普通字符 '0'，'a'。

//编码其他字符要用 Unicode 转义序列语法：'\uFF00'
private fun basic() {
    val aChar: Char = 'a'
    println(aChar)
    println('\n') // 输出一个额外的换行符
    println('\uFF00')
    println("制表符: ${'\t'}") //——制表符
    println("退格符: ${'\b'}") //——退格符
    println("换行: ${'\n'}") //——换行（LF）
    println("回车: ${'\r'}") //——回车（CR）
    println("单引号: ${'\''}") //——单引号
    println("双引号: ${'\"'}") //——双引号
    println("反斜杠: ${'\\'}") //——反斜杠
    println("美元符: ${'\$'}") //——美元符


    val bChar: Char = 65.toChar()
    println(bChar)
    for (i in 0..10) {
        print("${bChar.plus(i)},")
    }
    for (i in 0..10) {
        print("${bChar.plus(i)},")
    }
}

private fun method() {
    val aChar: Char = 'b'
    println("aChar. compareTo  :${aChar.compareTo('a')}")       // b-a
    println("aChar. compareTo  :${aChar.compareTo('b')}")
    println("aChar. compareTo  :${aChar.compareTo('c')}")        // b-c

    println("aChar. plus       :${aChar.plus(1)}")       //b+1 =c
    println("aChar. minus      :${aChar.minus('a')}")      //b-a=1
    println("aChar. minus      :${aChar.minus('b')}")
    println("aChar. minus      :${aChar.minus('c')}")    //b-c=-1 
    println("aChar. minus      :${aChar.minus(98)}")
    println("aChar. inc        :${aChar.inc()}")        //   b+1
    println("aChar. dec        :${aChar.dec()}")                // b-1
    println("aChar. toByte     :${aChar.toByte()}")     // 98
    println("aChar. toChar     :${aChar.toChar()}")
    println("aChar. toShort    :${aChar.code.toShort()}")
    println("aChar. toInt      :${aChar.code}")    // toInt
    println("aChar. toLong     :${aChar.code.toLong()}")
    println("aChar. toFloat    :${aChar.code.toFloat()}")
    println("aChar. toDouble   :${aChar.code.toDouble()}")
    println("aChar. toString   :${aChar.toString()}")
    println("aChar. equals     :${aChar.equals('a')}")
    println("aChar. hashCode   :${aChar.hashCode()}")
    println("aChar. rangeTo    :${aChar.rangeTo('a')}")
    println("aChar. rangeTo    :${aChar downTo 'a'}")
    println("aChar. rangeUntil :${aChar.rangeUntil('a')}")
    println("aChar. rangeUntil :${aChar downTo 'a'}")

}

private  fun main() {

    method()
}